package com.cw.jeeyt.dao.intf.system;

import java.util.List;

import com.cw.jeeyt.dao.model.system.SystemTableInfoDo;
import com.cw.lang.mybatis.dto.PageInfo;

/**
 * 表模型信息 dao数据库操作接口
 *
 * @author chenw
 * @version 1.0.0
 */
public interface SystemTableInfoDao {
    /**
     * 查询所有表模型信息
     *
     * @return 表模型信息集合
     */
    List<SystemTableInfoDo> querySystemTableInfoList();

    /**
     * 删除表模型信息
     *
     * @param systemTableInfo
     */
    void deleteSystemTableInfo(SystemTableInfoDo systemTableInfo);

    /**
     * 修改表模型信息
     *
     * @param systemTableInfo
     */
    void updateSystemTableInfo(SystemTableInfoDo systemTableInfo);

    /**
     * 根据主键查询表模型信息
     *
     * @param id 主键id
     * @return SystemTableInfo
     */
    SystemTableInfoDo getSystemTableInfoById(String id);

    /**
     * 新增表模型信息
     *
     * @param systemTableInfo
     * @return 整数
     */
    Integer insertSystemTableInfo(SystemTableInfoDo systemTableInfo);

    /**
     * 分页查询表模型信息
     *
     * @param systemTableInfo 查询条件
     * @param startNum 开始条数
     * @param pageSize 每页长度
     * @return SystemTableInfo集合
     */
    PageInfo<SystemTableInfoDo> queryByPage(SystemTableInfoDo systemTableInfo, Integer startNum, Integer pageSize);

    /**
     * 更新表模型中的主键id
     *
     * @param tableId 表模型id
     * @param pkId 表模型主键id
     * @throws Exception
     */
    void updatePkId(String tableId, Long pkId, String columnType);

    /**
     * 查询模块下的表模型信息
     *
     * @param moduleId 模块id
     * @return
     * @throws Exception
     */
    List<SystemTableInfoDo> queryListByModuleId(String moduleId);

    /**
     * 根据表前缀删除表模型信息
     *
     * @param tablePrefix
     */
    void deleteByTableCodePrefix(String tablePrefix, String modulePrefix);
}
